﻿using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using System;
using System.ServiceModel;
using System.Collections.Generic;
using Sinacor.Infra.Service.Security.Services;

namespace Sinacor.Servico.Bovespa.Contabil.Service.ServiceContract
{
    /// <summary>
    /// Service.ServiceContract Interface - IMunicipio
    /// </summary>
    [ExceptionShielding]
    [ServiceContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.Contabil.Service.ServiceContract", SessionMode = SessionMode.Allowed, Name = "IMunicipio")]
    public interface IMunicipio
    {
        #region ConsultarMunicipios

        /// <summary>
        /// Serviço irá Consultar uma lista de Municipios
        /// </summary>
        /// <returns>Lista de objetos do tipo DataContract.Response.MunicipioResponse</returns>
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.BusinessFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.ValidationFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.GeneralFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ConsultarMunicipios")]
        [OperationLog]
        List<DataContract.Response.MunicipioResponse> ConsultarMunicipios();

        #endregion
    }
}
